package com.ljf.task.service;

import com.ljf.common.exception.ServiceException;
import com.ljf.common.result.ServiceResultModel;
import com.ljf.common.service.IBasisService;
import com.ljf.common.vo.BasicCardTimeLineVO;
import com.ljf.task.dto.command.TaskDatTaskDetailStatusCommand;
import com.ljf.task.dto.command.TaskDatTaskTabulationCommand;
import com.ljf.task.dto.command.TaskDatTaskTabulationDesignCommand;
import com.ljf.task.dto.command.TaskDatTaskTabulationTaskStatusCommand;
import com.ljf.task.dto.query.TaskDatTaskTabulationQuery;
import com.ljf.task.vo.TaskDatTaskTabulationDesignMessageVO;
import com.ljf.task.vo.TaskDatTaskTabulationDevelopMessageVO;
import com.ljf.task.vo.TaskDatTaskTabulationTaskStatusVO;
import com.ljf.task.vo.TaskDatTaskTabulationVO;

/**
 * 任务列表  服务接口定义
 * 
 * @author LJF
 * @since 2024-12-25
 */
public interface ITaskDatTaskTabulationService extends IBasisService<TaskDatTaskTabulationQuery, TaskDatTaskTabulationVO, TaskDatTaskTabulationCommand> {

    /**
     * 更新任务状态
     *
     * @param command
     * @return
     * @throws ServiceException
     */
    ServiceResultModel editTaskStatus(TaskDatTaskTabulationTaskStatusCommand command) throws ServiceException;

    /**
     * 获取提交信息文本
     *
     * @param id
     * @return
     * @throws ServiceException
     */
    ServiceResultModel<String> queryCommitMessageById(Long id) throws ServiceException;

    /**
     * 根据ID查询任务设计信息
     *
     * @param id
     * @return
     * @throws ServiceException
     */
    ServiceResultModel<TaskDatTaskTabulationDesignMessageVO> queryDesignMessageById(Long id) throws ServiceException;

    /**
     * 更新任务明细草稿
     *
     * @param command
     * @return
     * @throws ServiceException
     */
    ServiceResultModel editDetailDraft(TaskDatTaskTabulationDesignCommand command) throws ServiceException;

    /**
     * 更新任务明细终稿
     *
     * @param command
     * @return
     * @throws ServiceException
     */
    ServiceResultModel editDetailFinalDraft(TaskDatTaskTabulationDesignCommand command) throws ServiceException;

    /**
     * 根据ID查询任务开发信息
     *
     * @param id
     * @return
     * @throws ServiceException
     */
    ServiceResultModel<TaskDatTaskTabulationDevelopMessageVO> queryDevelopMessageById(Long id) throws ServiceException;

    /**
     * 更新任务明细开发状态
     *
     * @param command
     * @return
     * @throws ServiceException
     */
    ServiceResultModel editDetailDevelopStatus(TaskDatTaskDetailStatusCommand command) throws ServiceException;

    /**
     * 根据ID查询任务开发提交内容
     *
     * @param id
     * @return
     * @throws ServiceException
     */
    ServiceResultModel<String> queryDetailSubmitMessageById(Long id) throws ServiceException;

    /**
     * 根据ID查询任务状态
     *
     * @param id
     * @return
     * @throws ServiceException
     */
    ServiceResultModel<TaskDatTaskTabulationTaskStatusVO> queryTaskStatusById(Long id) throws ServiceException;

    /**
     * 根据ID查询任务操作历史
     *
     * @param id
     * @return
     * @throws ServiceException
     */
    ServiceResultModel<BasicCardTimeLineVO> queryOperateHistoryById(Long id) throws ServiceException;

}
